#pragma once
#include <vector>
#include <map>
#include "stdafx.h"
#include "FishInfo.h"
#include "Animation.h"
class Fish
{
private:
	Ogre::Entity* m_Entity;
	Ogre::SceneNode* m_Node;
	Ogre::AnimationState* m_AnimationsState;

	class Aquarium* m_Environment;
	FishInfo* m_Info;

	HsplineCurve m_Path;
	Vector3 m_Position;
	
	AnimationDatas m_AnimationDatas;
public:
	Fish(FishInfo* info,class Aquarium* environment);
	~Fish(void);

	void Update(float dt); //Input delta time
private:
	void Action(int index);
public:
	void SetPosition(Vector3& posn); // Set Position to posn
	void SwimTo(std::vector<Vector3> points, int action=1); // Swim to points with the action
	void AddAnimation(AnimationData& animation);
};
typedef std::vector<Fish*> FishVector;
typedef std::map<int,FishVector> FishMap; // Key value is the kind of the fish